//TODO
import { worker, ThreadWorkerGlobalScope, MessageEvents, ErrorEvent } from '@kit.ArkTS'

// 接收宿主线程传递至worker线程的数据并访问
//TODO
const  workerPort:ThreadWorkerGlobalScope = worker.workerPort

// 宿主线程向Worker线程发送消息，消息中的Sendable对象通过引用传递，消息中的非Sendable对象通过序列化传递。
//TODO
workerPort.onmessage = (e: MessageEvents ) => {
  let oldArr: string[] = e.data
  let newArr: string[] = strSort(oldArr)
  workerPort.postMessage(newArr)
}

/**
 * 定义当 worker 收到无法反序列化的消息时要调用的事件处理程序。
 * 事件处理程序在 worker 线程中执行。
 *回调函数。表示宿主线程接收到来自其创建的Worker通过workerPort.postMessage接口发送的消息时被调用的事件处理程序，处理程序在宿主线程中执行。其
 * 中回调函数中event类型为MessageEvents，表示收到的Worker消息数据。
 * @param E 消息数据
 */
//TODO
workerPort.onmessageerror = (e: MessageEvents ) => {
  console.log('worker::onmessageerror==', e.data)
}

/**
 * 定义在 worker 执行期间发生异常时要调用的事件处理程序。
 * 事件处理程序在 worker 线程中执行。
 *
 * @param 错误消息
 */
//TODO
workerPort.onerror = (e: ErrorEvent ) => {
  console.log('worker::onerror==', e)
}

//TODO
function strSort (arr: string[]): string[] {
  let newArr = arr.sort()
  return newArr
}